ExtJS এর Model হচ্ছে ডেটার কাঠামো বা স্ট্রাকচার, যা ডেটা সংরক্ষণ, রিটার্ন, আপডেট এবং ভ্যালিডেশন পরিচালনা করে। মডেলগুলি সাধারণত একটি store বা proxy ব্যবহার করে ডেটা পরিচালনা করে এবং fields, validations, এবং associations এর মাধ্যমে ডেটার সাথে সম্পর্কিত অপারেশন পরিচালনা করে।
একটি ExtJS Model তৈরি করতে, Ext.define
ফাংশন ব্যবহার করতে হয় এবং এটি Ext.data.Model
ক্লাস থেকে সম্প্রসারিত (extend) করা হয়।
fields
: মডেলের ডেটা ফিল্ডগুলি সংজ্ঞায়িত করা হয় (যেমন: নাম, ইমেইল, ফোন নম্বর ইত্যাদি)।validations
: ডেটার বৈধতা পরীক্ষা করার জন্য (যেমন: নামের দৈর্ঘ্য, ইমেইল ফরম্যাট)।associations
: মডেলগুলোর মধ্যে সম্পর্ক নির্ধারণ (যেমন: একাধিক রেকর্ডের সাথে সম্পর্কিত মডেল)।proxy
: ডেটা সেভ বা লোড করার জন্য।Ext.define('MyApp.model.User', {
extend: 'Ext.data.Model',
// মডেলের ডেটা ফিল্ড
fields: [
{ name: 'id', type: 'int' },
{ name: 'name', type: 'string' },
{ name: 'email', type: 'string' },
{ name: 'dob', type: 'date', dateFormat: 'Y-m-d' }
],
// মডেলের ভ্যালিডেশন
validations: [
{ type: 'length', field: 'name', min: 3 },
{ type: 'email', field: 'email' }
],
// মডেলের ডেটা অ্যাসোসিয়েশন (যদি প্রয়োজন হয়)
associations: [
{
type: 'hasMany',
model: 'MyApp.model.Order', // সম্পর্কিত মডেল
name: 'orders', // সম্পর্কের নাম
foreignKey: 'user_id' // সম্পর্কের কী
}
],
// ডেটা লোড বা সেভ করার জন্য প্রক্সি কনফিগারেশন
proxy: {
type: 'ajax',
url: '/users', // API URL
reader: {
type: 'json',
rootProperty: 'data' // API থেকে আসা JSON ডেটা রুট
}
}
});
fields
:name
: ফিল্ডের নাম।type
: ফিল্ডের ডেটা টাইপ, যেমন string
, int
, date
।dateFormat
: তারিখ ফরম্যাট (যদি প্রয়োজন হয়)।validations
:type
: ভ্যালিডেশনের ধরন (যেমন: length
, email
, presence
)।field
: যেই ফিল্ডে ভ্যালিডেশন হবে।min
, max
: ভ্যালিডেশন সীমা (যেমন দৈর্ঘ্য)।associations
:type
: সম্পর্কের ধরন, যেমন hasMany
, belongsTo
ইত্যাদি।model
: সম্পর্কিত মডেলের নাম।foreignKey
: সম্পর্কের কী।proxy
:type
: ডেটা লোড বা সেভ করার জন্য ব্যবহৃত প্রযুক্তি (যেমন ajax
, localstorage
)।url
: API URL বা সেভ/লোড করার লোকেশন।reader
: API থেকে প্রাপ্ত ডেটার রিডারের ধরন (যেমন: json
), এবং rootProperty
কনফিগারেশন।মডেল তৈরির পর, আপনি সেই মডেল ব্যবহার করে ডেটা লোড বা সেভ করতে পারেন।
var user = Ext.create('MyApp.model.User', {
name: 'John Doe',
email: 'john.doe@example.com',
dob: '1990-05-15'
});
user.save({
success: function(record, operation) {
console.log('User saved successfully');
},
failure: function(record, operation) {
console.log('Error saving user');
}
});
Ext.create('MyApp.model.User', {
id: 1
}).load({
success: function(record) {
console.log(record.get('name')); // সফলভাবে ডেটা লোড হলে নাম দেখাবে
},
failure: function(record, operation) {
console.log('Error loading user');
}
});
ডেটা ম্যানেজমেন্টে মডেলটি store এর সাথে ব্যবহার করা হয়। স্টোরটি মডেলের ডেটার লিস্ট ধারণ করে এবং ডেটা লোড বা সেভ করতে সাহায্য করে।
var userStore = Ext.create('Ext.data.Store', {
model: 'MyApp.model.User',
autoLoad: true // অ্যাপ্লিকেশন লোড হওয়ার পর ডেটা অটোমেটিক লোড হবে
});
userStore.load({
callback: function(records, operation, success) {
if (success) {
var user = records[0]; // প্রথম রেকর্ড
user.set('name', 'Jane Doe'); // নাম আপডেট
user.save(); // সেভ করা
}
}
});
fields
: মডেলের ফিল্ড বা ডেটা পয়েন্টগুলির সংজ্ঞা।validations
: মডেলের ডেটার ভ্যালিডেশন।associations
: মডেলের মধ্যে সম্পর্ক (যেমন hasMany
, belongsTo
)।proxy
: ডেটা লোড এবং সেভ করার জন্য প্রযুক্তি কনফিগারেশন।save()
এবং load()
: মডেল থেকে ডেটা সেভ বা লোড করার পদ্ধতি।মডেল কনফিগারেশন এবং ডেটা ম্যানিপুলেশনটি ExtJS অ্যাপ্লিকেশনের ডেটা হ্যান্ডলিং ও ভ্যালিডেশন সহজ করে তোলে এবং মডেল ডেটার মধ্যে সম্পর্ক তৈরি করতে সাহায্য করে।
Read more